Un mini-tableur en mode texte (dev-c++ 5)

0/5 (2 avis)

Snippet vu 2 995 fois - Téléchargée 33 fois

Contenu du snippet

Ce petit tableur permet d'éditer des caractères dans un tableau de 6 colonnes par 6 lignes. Dans cette version, il n'est pas encore possible d'enregistrer mais ça reste à venir.

Source / Exemple :

#include <iostream>
#include <stdlib.h>
#include <string>
#include <stdio.h>
#include <conio.c>
/*codes des touches:
Echap=27;F1 à F10 59 à 68 précédé de 0;F11=-123 précédé de -32;F12=-122 précédé de -32;
Tab=9;Retour arrière=8;ENTREE=13;Haut=72 précédé de -32;Bas=80 précédé de -32;Droite=77 précédé de -32;Gauche=75 précédé de -32;Espace=32;
touches non pavé numérique:
 carré=-3;0=48;°=-8;+=43;
1à9 : 49 à 57;&=38;é=-126;"=34;'=39;(=40;-=45;è=-118;_=95;ç=-121;à=-123;)=41;==61;
~=121;#=35;{=123;[=91;|=124;`=126;\=92;^=94;@=64;]=93;}=125;
Touches pavé numérique:
/=47; *=42; -=45; +=43; 0 à 9: 48 à 57;
.:46;Suppr (Maj+ .)=83;
Caractères:
a à z=97 à 122; A à Z=65 à 90; $=36; ?=-49; £=-100; ù=-105; %=37; µ=-26; ,=44;
?=63; ;=59; :=58; !=33; §=-11; ä=-124;ï=-117;ë=-119;ö=-108;ü=-127;â=-125;ê=-120;î=-116;ô=-109;û=-106;
*/
using namespace std;

 char ea=130;/*é=(char)130*/
 char aa=133;/*à=(char)133*/
 char eacc=136;/*ê=(char)136*/
 char trh=196; /* t="T", tr=trait, c=coin, g=gauche, d=droite, h ou hor=horizontal, v ou ver=vertical,
 cross=croix, b=bas ,h=haut ou horizontal*/
char cgh=218; 
char cgb=192; 
char cdh=191;
char cdb=217;
char trv=179;
char thorb=194;
char thorh=193;
char tverg=195;
char tverd=180;
char cross=197;

void tab10f10()
{

int x,y;
 x=1;y=1;
 gotoxy(x,y);
 printf("%c",cgh);
 int i=1;
 while (i<=6)/*7 colonnes */
 {
 printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,thorb);
 i++;
 }
  printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,cdh);

 x=1;y=2;
 gotoxy(x,y);
 int j=1;
 while (j<=8)/*7 colonnes :8 bords*/
 {
 printf("%c               ",trv);
 j++;
 }
 x=1;y=3;
 int k=1;
 while (k<=6)/*Nombes de lignes-1*/
 {
  gotoxy(x,y);
  printf("%c",tverg);
  int l=1;
   while (l<=6)/*Nombre de colonnes-1*/
   {
    printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,cross);
   l++;
   }
   printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,tverd);
   y++;
   gotoxy(x,y);
   int m=1;
   while (m<=8)/*Les bords*/
   {
    printf("%c               ",trv);
    m++;
    }
    y++;
    k++;
  }
  
  gotoxy(1,y);
  printf("%c",cgb);
  int n=1;
  while (n<=6)/*Les 7 colonnes de bas de tableau*/
 {
 printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,thorh);
 n++;
 }
  printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,trh,cdb);
  printf("\n\n");
  printf("Tab,Entree:Valider, Haut:Ligne precedente(efface le caractere courant),Bas:Ligne suivante(efface le caractere courant),\nDroite: caractere suivant;Retour arriere,gauche:revenir au caractere precedent");
  printf(" Espace:efface le caractere suivant; Echap=Quitter");
  char touche;/*Va recevoir le code décimal de la touche frappée*/
  char carac;/*Sera utilisé pour convertir l'entier en char et afficher la touche frappée*/
  x=2;y=2;
  gotoxy(x,y);
  
  while (touche!=27)
    {
  
     /*Les codes des touches sont détaillés au début de la source*/
     touche=getch();
     if (touche==-32) goto next;/*Si l'on appuie sur l'une des touches directionnelles deux codes sont successivement attribués à "touche" (-32 puis 80 pour bas,72 pour haut,75 pour gauche,77 pour droite*/
     if ( touche==13) {x=x+17; gotoxy(x,y);}
     if (touche==8) { x--; gotoxy(x,y);}
     if (touche==32) x++;
     next:/*Capture du deuxième code dans les touches directionnelles*/
     if (touche==72) {y=y-2;  gotoxy(x,y); if (y<=0) y=20;}
     if (touche==80) {y=y+2;  gotoxy(x,y); if (y>=22) y=2;}
     if (touche==77) {x++; gotoxy(x,y); if (x>=160) x=2;}
     if (touche==75) {x--;  gotoxy(x,y); if (x<=1) x=159;}
     
     
     if ( touche!=13 && touche!=8 && touche!=72 && touche!=80 && touche!=77 && touche!=75 && touche!=-32)
     { carac=(char)touche; x++; printf("%c",carac);} /*Affiche le caractère tapé si la touche est différente de celles du dessus*/ 
     }   
       
       
        
      
 }
       

 




int main()
{
  
 printf("Bienvenue sur le Tableur version 1.0. Dans cette version\n");
 printf("Il n'est pas possible de charger ni d'enregistrer les donn%ces\n",ea);
 printf("En revanche vous pouvez modifier le contenu d%cj%c %ccrit\n",ea,aa,ea);
 printf("Servez-vous des touches mentionn%ces au bas de la fen%ctre\n",ea,eacc);
 printf("quand vous aurez le tableau sous les yeux.\n\n\n\n");
 printf("REMARQUE: *Utilisateurs de Windows XP: Elargir la fenetre au maximum\n");
 printf("*Windows 98/Me et autres: Passer a l'affichage plein ecran (vous taperez Echap pour quitter)\n");
  
 system("pause");
 system("cls");
  
 tab10f10();
 
 
 
 
  
  
  return 0;
}

Conclusion :

Il est possible d'effacer les cases latérales du tableau; il y a quelques bugs au niveau des coordonnées mais dans l'ensemble c'est convenable. Je prépare une meilleure version. ça marche sous XP; sous 98 et Me je n'ai pas testé.

A voir également

Ajouter un commentaire

Commentaires

Nikoscian
Messages postés
13
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
11 février 2005
-
Merci!
Mais ça fait assez longtemps que j'ai laissé tomber ce projet! C'était plutôt quand je débutais en programmation :)
Je suis sur des projets nettement plus intéressants, multi-plateformes, mais beaucoup plus complexes, à savoir un client irc (en cours) et msn (l'année prochaine), avec Qt 4.
MULRIK
Messages postés
8
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
16 juin 2006
-
Bravo c'est exactement ce qu'il me fallait 8/10 !
P.S : Je n'ai pas mis 10/10 car la navigation et la compréhension de comment il faut faire pour changer de coloneetc.. reste encore a venir !
A part sa très bon prog avec aucune faute lors de la compilation !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.