My Informatica
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.



 
IndicePortaleUltime immaginiCercaRegistratiAccedi
Social

Cerca
 
 

Risultati per:
 
Rechercher Ricerca avanzata
Visite
My Biblioteca
Leggi Qui Tutti I Libri

BASTA UN CLICK
Ultimi argomenti attivi
»  LinuxMX blog & forum: una comunità tutta Linux
Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  EmptyVen Giu 15, 2012 9:00 pm Da niculinux

» Le Funzioni
Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  EmptyDom Mar 18, 2012 12:07 am Da Mira

» Gestione permessi di un file
Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  EmptyGio Mar 15, 2012 12:49 pm Da Mira

» Comando per creare un link simbolico
Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  EmptyMer Mar 14, 2012 11:08 pm Da Mira

» Comandi per eliminare file e cartelle
Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  EmptyMer Mar 14, 2012 3:29 pm Da Mira

» Comandi per rinominare un file
Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  EmptyDom Mar 04, 2012 12:41 pm Da Mira

» Le variabili (parte 2)
Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  EmptySab Mar 03, 2012 4:24 pm Da Mira

» Le variabili (parte 1)
Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  EmptyLun Feb 27, 2012 11:32 pm Da Mira

» Introduzione al C...
Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  EmptyLun Feb 27, 2012 1:37 pm Da Mira

Argomenti più visti
Regolamento del forum
Tablet android quale comprare o quale scegliere
Problema aggiornamento ubuntu 11.04 a 11.10
LinuxMX blog & forum: una comunità tutta Linux
VirtualBox 4.1.4 DOWNLOAD FREE
Libre Office o Open Office?
openSUSE 12.1 Beta 1 DOWNLOAD FREE
INTRODUZIONE al PHP corso gratuito in versione HTML o PDF
Ciao a tutti voi
Le variabili (parte 1)
Volunia
Pagina Facebook
Parole chiave
ubuntu

Condividi | 
 

 Programma in C che acquisisce una parola e la stampa solo e solo se palindroma

Visualizza l'argomento precedente Visualizza l'argomento successivo Andare in basso 
AutoreMessaggio
florin88

florin88

Messaggi : 334
Data d'iscrizione : 21.09.11
Età : 35
Località : tutto il mondo

Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  Empty
MessaggioTitolo: Programma in C che acquisisce una parola e la stampa solo e solo se palindroma    Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  EmptySab Ott 15, 2011 12:07 am

Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  Indexggg

Vediamo di metterci a scrivere un programma in linaguaggio C che acquisisce una parola inserita dalla tastiera (definita in questo caso come stringa di caratteri senza lo spazio) e la stampa se e solo se questa parola è palindroma. Per farmi capire da chi non conosce bene largomento: sono quelle parole che non importa se si legono da sinistra o da destra hanno come significato la stessa cosa => LE-TA-LE MA-RE-MA NE-RO-NE.

In questo problema per determinare la lunghezza della parola si utilizzerà la funzione strlen(s) contenuta nel file header <string.h>.

Vediamo la Soluzione.

SOLUZIONE SBAGLIATA:
Codice:

#include <studio.h>
#include <string.h>

void main ()
{

      char a[100];
      int i, flag;

      i  = 0;
      scanf ("%a", a);
      flag = 1;
 
      while ((i < (strlen(a)/2)) && (flag == 1))  {

                if (a[i] != a[strlen(a)-i-1])    {
                 
                  flag = 0;
              }
          i++;
      }

      if (flag == 1)  {
                printf ("La parola da te scelta e' PALINDROMA. \n");
      } else {
                printf ("La parola da te scelta NON E' PALINDROMA. \n");
      }
return 0;
}



SOLUZIONE CORRETTA
Codice:


#include <stdio.h>
#include <string.h>

#define MAX_BUFFER 512

int main (int argc, char *argv[])
{
 char a[MAX_BUFFER]={0};
 int i, flag, len; i = flag = len = 0;
 
 if ( argc == 2 ) {
  if ( strlen(argv[1]) > MAX_BUFFER ) {
    printf("Parola inserita maggiore del buffer consentito di %d caratteri\n",MAX_BUFFER);
    return 1;
  }
  sprintf(a,"%s",argv[1]);
 }
 else {
  printf("Inserisci parola > ");
  scanf ("%s", a);
 }
 flag = 1;
 len = strlen(a);
 for ( i=0; i < len/2; i++ ){
  if ( a[i] != a[len-i-1] ) {
        flag = 0;
  break;
  }
 }

 if (flag == 1)  {
                printf ("La parola da te scelta e' PALINDROMA. \n");
 } else {
                printf ("La parola da te scelta NON E' PALINDROMA. \n");
                return 1;
 }
 return 0;
}


Analizzare bene il codice prima di metterlo in pratica, scriverlo su un foglio e poi scriverlo nel vostro editor e compilarlo. Wink
Consiglio per i novizi Wink

programmazione


seguire la spiegazione sottostante, a cura di gulpe


Ultima modifica di florin88 il Lun Nov 21, 2011 3:21 pm - modificato 1 volta.
Torna in alto Andare in basso
http://www.lascaricata.forumattivo.com
fuoco992



Messaggi : 108
Data d'iscrizione : 27.09.11

Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  Empty
MessaggioTitolo: Re: Programma in C che acquisisce una parola e la stampa solo e solo se palindroma    Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  EmptyMar Ott 25, 2011 5:42 pm

e se la parola fosse di 102 lettere XDDDDDDDDDD
Laughing
Torna in alto Andare in basso
florin88

florin88

Messaggi : 334
Data d'iscrizione : 21.09.11
Età : 35
Località : tutto il mondo

Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  Empty
MessaggioTitolo: Re: Programma in C che acquisisce una parola e la stampa solo e solo se palindroma    Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  EmptyMar Ott 25, 2011 5:44 pm

=)) =)) =))

con questa sorgente così va in crash error 404


=)) =)) =))

basta cambiare char a[100] con char a[102]
Torna in alto Andare in basso
http://www.lascaricata.forumattivo.com
gulpe



Messaggi : 2
Data d'iscrizione : 21.11.11

Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  Empty
MessaggioTitolo: Re: Programma in C che acquisisce una parola e la stampa solo e solo se palindroma    Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  EmptyLun Nov 21, 2011 2:55 pm

Non posso che commentare anche questo codice.

1) "stdio.h" non "studio.h"
2) "int main" non "void main" - Se dichiari void main, come puoi ritornare 0?
3) buona cosa inizializzare sempre le variabili all'atto della dichiarazione

char a[100]={0}; --> non char a[100];
int i, flag; i = flag = 0; --> non int i,flag

Infatti se vedi nel tuo codice ti sei dimenticato di inizializzare "i". Quel while non potrà mai funzionare correttamente.

3) Puoi terminare il ciclo while non appena ti accorgi che una parola non è palindroma. Questo ti permette di risparmiare inutili cicli di CPU.
Visto che devi mantenere un contatore è forse più sensato usare un for invece che un while

4) cosa è il carattere di formattazione %a ? una stringa essendo un char * si prende con %s
scanf("%s",a); --> non scanf("%a",a);

5) Per rendere il codice più carino potresti anche prendere la parola da cmqline del tipo ./mioprogramma parola-da-testare

codice corretto:


Codice:

#include <stdio.h>
#include <string.h>

#define MAX_BUFFER 512

int main (int argc, char *argv[])
{
 char a[MAX_BUFFER]={0};
 int i, flag, len; i = flag = len = 0;
 
 if ( argc == 2 ) {
  if ( strlen(argv[1]) > MAX_BUFFER ) {
    printf("Parola inserita maggiore del buffer consentito di %d caratteri\n",MAX_BUFFER);
    return 1;
  }
  sprintf(a,"%s",argv[1]);
 }
 else {
  printf("Inserisci parola > ");
  scanf ("%s", a);
 }
 flag = 1;
 len = strlen(a);
 for ( i=0; i < len/2; i++ ){
  if ( a[i] != a[len-i-1] ) {
        flag = 0;
   break;
  }
 }

 if (flag == 1)  {
                printf ("La parola da te scelta e' PALINDROMA. \n");
 } else {
                printf ("La parola da te scelta NON E' PALINDROMA. \n");
                return 1;
 }
 return 0;
}
Torna in alto Andare in basso
Contenuto sponsorizzato




Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  Empty
MessaggioTitolo: Re: Programma in C che acquisisce una parola e la stampa solo e solo se palindroma    Programma in C che acquisisce una parola e la stampa solo e solo se palindroma  Empty

Torna in alto Andare in basso
 

Programma in C che acquisisce una parola e la stampa solo e solo se palindroma

Visualizza l'argomento precedente Visualizza l'argomento successivo Torna in alto 

 Argomenti simili

-
» Programma in C che legge una sequenza di numeri e stampa la somma
» Programma video
» HELLO WORLD, STAMPA DATA e ORA in PHP corso gratuito in versione HTML o PDF
» lanciare programma java
» Programma in C che legge una sequenza ignota di numeri positivi
Pagina 1 di 1

Permessi in questa sezione del forum:Non puoi rispondere agli argomenti in questo forum.
My Informatica :: Programmazione a 360° :: Tutto C, C++, C# e Objective-C :: Esempi e Sorgenti-